package com.dolawing.phonecallapp.listenphonecall;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;


public class AlarmSettings {
    private  AlarmManager alarmManager;
    private  PendingIntent pi;
    private  int interval = 10 * 60 * 1000; //10min 运行一次
    private  String createRunningInfo; //新建情况
    private  String onStartRunningInfo; //正在运行情况
    private  int serviceCreateTimes = 1; //新建次数
    private  int serviceonStartTimes = 0; //正在运行次数
    /**
     * 注册闹钟 ,设置定时任务
     * @param context
     */
    public void registAlarm(Context context){
        Context ctx = context;
        //获取系统 闹钟管理器
        alarmManager = (AlarmManager)ctx.getSystemService(Context.ALARM_SERVICE);
        //long triggerTime = SystemClock.elapsedRealtime() + interval; //系统开机到现在的毫秒数+延迟执行时间
        Intent intent = new Intent(ctx, CallListenerService.class);

        if (pi!=null){
            // 取消原有的定时任务
            alarmManager.cancel(pi);
        }
        pi = PendingIntent.getService(ctx, 0, intent, 0);

        //Android6.0及以上版本
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,
                    System.currentTimeMillis()+interval, pi);
        } else {
            // set，只会警报一次
            alarmManager.set(AlarmManager.RTC_WAKEUP,
                    System.currentTimeMillis()+interval, pi);
        }
        /*
        type取值：相对时间（ELAPSED_REALTIME和ELAPSED_REALTIME_WAKEUP），startTime就得使用相对时间 （相对于系统启动时间来说）:SystemClock.elapsedRealtime()
        type取值：绝对时间(RTC、RTC_WAKEUP、POWER_OFF_WAKEUP）, startTime就得使用绝对时间：System.currentTimeMillis()
        type的5种状态
        AlarmManager.RTC，硬件闹钟，闹钟在睡眠状态下不可用（手机休眠时不发射闹钟）。
        AlarmManager.RTC_WAKEUP，硬件闹钟，闹钟在睡眠状态下会唤醒系统并执行提示功能（闹钟发躰时唤醒手机休眠）；
        AlarmManager.ELAPSED_REALTIME，真实时间流逝闹钟，闹钟在手机睡眠状态下不可用（手机休眠时不发射闹钟）。
        AlarmManager.ELAPSED_REALTIME_WAKEUP，真实时间流逝闹钟， 闹钟在睡眠状态下会唤醒系统并执行提示功能（闹钟发躰时唤醒手机休眠）；
        AlarmManager.POWER_OFF_WAKEUP 表示闹钟在手机关机状态下也能正常进行提示功能，所以是5个状态中用的最多的状态之一
        */
    }

    /**
     * 取消闹钟
     */
    public void unRegistAlarm(){
        if (pi!=null){
            // 取消原有的定时任务
            alarmManager.cancel(pi);
            pi.cancel();
        }
    }

    public String getCreateRunningInfo() {
        return createRunningInfo;
    }

    public void setCreateRunningInfo(String createRunningInfo) {
        this.createRunningInfo = createRunningInfo;
    }

    public String getOnStartRunningInfo() {
        return onStartRunningInfo;
    }

    public void setOnStartRunningInfo(String onStartRunningInfo) {
        this.onStartRunningInfo = onStartRunningInfo;
    }

    public int getServiceCreateTimes() {
        return serviceCreateTimes;
    }

    public void setServiceCreateTimes(int serviceCreateTimes) {
        this.serviceCreateTimes = serviceCreateTimes;
    }

    public int getServiceonStartTimes() {
        return serviceonStartTimes;
    }

    public void setServiceonStartTimes(int serviceonStartTimes) {
        this.serviceonStartTimes = serviceonStartTimes;
    }
}
